﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace proyectoFinalPDS.Persistencia
{
    class DAOAlumno
    {

        private MapeadorSQLDataContext db;
        public DAOAlumno()
        {
            db = new MapeadorSQLDataContext();
        }

        internal Alumno getAlumno(int idUsuario)
        {


            Alumno alumno = (from u in db.Alumno
                         where u.idUsuario==idUsuario
                         select u).First<Alumno>();



            return alumno;
        }

        internal void inscibir(Alumno alumno, int idCurso)
        {


            Alumno_cursa a_c = new Alumno_cursa();

            a_c.idAlumno = alumno.idAlumno;
            a_c.idCurso = idCurso;
            a_c.fechaInscripcion = DateTime.Now;
            a_c.estadoFinal = "Cursando";

            db.Alumno_cursa.InsertOnSubmit(a_c);

            db.SubmitChanges();
        }

        internal Alumno AltaAlumno(Presentacion.DTOAlumno dtoU)
        {


            Usuario usuario = new Usuario();

            usuario.nombreUsuario = dtoU.nombreUsuario;
            usuario.nombre = dtoU.nombre;
            usuario.apelliido = dtoU.apellido;
            usuario.email = dtoU.email;
            usuario.pais = dtoU.pais;
            usuario.contraseña = dtoU.contraseña;
            usuario.ciudad = dtoU.ciudad;
            usuario.fechaNacimiento = DateTime.Now;
            usuario.domicilio = "";
            usuario.tipo = 2;

            Alumno alumno = new Alumno();

            db.Usuario.InsertOnSubmit(usuario);

            alumno.Usuario = usuario;

            db.Alumno.InsertOnSubmit(alumno);

            

            db.SubmitChanges();

            return alumno;
        }





        internal bool existeUsuario(string nombre)
        {


            var resultado = from u in db.Usuario
                            where nombre == u.nombreUsuario
                            select u;

            if (resultado.Count() == 0)
                return false;
            return true ;
        }

        internal List<Alumno> getAlumnos(int idCurso)
        {
            
            List<Alumno> lista = new List<Alumno>();
            db = new MapeadorSQLDataContext();
            Curso curso = (from c in db.Curso
                           where c.idCurso == idCurso
                           select c).First<Curso>();
            foreach (Alumno_cursa a in curso.Alumno_cursa) {
                lista.Add(a.Alumno);
            }
            return lista;
        }

        internal Alumno ActualizarDatos(Alumno alumno, Presentacion.DTOAlumno usuario)
        {
            

            alumno.Usuario.nombre = usuario.nombre;
            alumno.Usuario.apelliido = usuario.apellido;
            alumno.Usuario.contraseña = usuario.contraseña;
            alumno.Usuario.email = usuario.email;
            alumno.Usuario.pais = usuario.pais;
            alumno.Usuario.nombreUsuario = usuario.nombreUsuario;
            alumno.Usuario.ciudad = usuario.ciudad;


            db.SubmitChanges();
            return alumno;
        }
    }
}
